package com.azxcrm.project.monitor.workflow.service;

import java.util.List;

import com.azxcrm.project.monitor.workflow.domain.WorkFlow;

/**
 * 工作流 服务层
 * 
 * @author Dustyone
 * @date 2018-08-07
 */
public interface WorkFlowService {

	/**
	 * 查询工作流信息
	 * 
	 * @param id
	 *            工作流ID
	 * @return 工作流信息
	 */
	 WorkFlow selectWorkFlowById(Integer flowId);
	 
	 /**
	  * 根据flowCode查询工作流信息
	  * @param flowCode
	  * @return 工作流信息
	  */
	 WorkFlow selectWorkFlowByCode(String flowCode);

	/**
	 * 查询工作流列表
	 * 
	 * @param workFlow
	 *            工作流信息
	 * @return 工作流集合
	 */
	 List<WorkFlow> selectWorkFlowList(WorkFlow workFlow);
	 
	 /**
	 * 查询工作流状态列表
	 * 
	 * @param workFlow
	 *            工作流信息
	 * @return 工作流集合
	 */
	 List<WorkFlow> selectWorkFlowStatesList(WorkFlow workFlow);

	/**
	 * 新增工作流
	 * 
	 * @param workFlow
	 *            工作流信息
	 * @return 结果
	 */
	 int insertWorkFlow(WorkFlow workFlow);

	/**
	 * 修改工作流
	 * 
	 * @param workFlow
	 *            工作流信息
	 * @return 结果
	 */
	 int updateWorkFlow(WorkFlow workFlow);

	/**
	 * 保存工作流
	 * 
	 * @param workFlow
	 *            工作流信息
	 * @return 结果
	 */
	 int saveWorkFlow(WorkFlow workFlow);

	/**
	 * 删除工作流信息
	 * 
	 * @param id
	 *            工作流ID
	 * @return 结果
	 */
	 int deleteWorkFlowById(Integer flowId);

	/**
	 * 批量删除工作流信息
	 * 
	 * @param ids
	 *            需要删除的数据ID
	 * @return 结果
	 */
	 int batchDeleteWorkFlow(Integer[] flowIds);
	 
	 /**
     * 查询该工作流是否已被应用
     * 
     * @param flowId 流程ID
     * @return 结果 true 存在 false 不存在
     */
     boolean checkFlowIsApplyed(int flowId);
}
